/* #ifndef _TASKQUEUE_H_ */
/* #define _TASKQUEUE_H_ */

/* #include <queue> */
/* #include <mutex> */
/* #include <condition_variable> */

/* using std::queue; */
/* using std::mutex; */
/* using std::unique_lock; */
/* using std::condition_variable; */

/* class TaskQueue */
/* { */
/* public: */
/*     TaskQueue(size_t queSize); */
/*     ~TaskQueue(); */
    
/*     void push(const int & value); */
/*     int pop(); */
/*     bool empty()const; */
/*     bool full()const; */
/* private: */
/*     size_t _quesize; */
/*     queue<int> _que; */
/*     mutex _mutex; */
/*     condition_variable _notEmpty; */
/*     condition_variable _notFull; */
/* }; */

/* #endif */


#ifndef __TASKQUEUE_H__
#define __TASKQUEUE_H__

#include <queue>
#include <mutex>
#include <condition_variable>

using std::queue;
using std::mutex;
using std::unique_lock;
using std::condition_variable;


class TaskQueue
{
public:
    TaskQueue(size_t queSize);
    ~TaskQueue();

    //添加任务与获取任务
    void push(const int &value);
    int pop();

    //判断空还是满
    bool empty() const;
    bool full() const;

private:
    size_t _quesize;//任务队列的容量大小
    queue<int> _que;//存放数据的数据结构
    mutex _mutex;//互斥锁
    condition_variable _notEmpty;//非空条件变量
    condition_variable _notFull;//非满条件变量

};

#endif

